<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>title</title>
  <script>
    /*
    *
    * 复习
    *
    * apply和call方法的使用和区别
    *
    * 都可以改变this指向的
    * 使用方式:
    * 函数名.apply(对象,[参数1,参数2,参数3,...]);
    * 函数名.call(对象,参数1,参数2,参数3,....);
    * 我想要使用其他对象的某个方法,其他对象.方法名.apply(当前对象,参数,...);
    * 这个方法就会被当前的对象所使用,同时这个方法中的this就是当前的对象,在调用方法的时候改变了this的指向
    *
    * bind方法的使用和区别
    * 复制一个方法或者是函数,是在复制的同时改变了this的指向
    * 使用方式:
    * 函数名.bind(对象,参数1,参数2，...);------>返回值是复制之后的这个函数
    *
    * 高阶函数---->函数的使用的方式:函数作为参数使用，函数作为返回值使用
    * 函数作为参数使用的时候,这个函数可以是匿名函数,也可以是命名函数
    * 作用域和作用域链及预解析
    *
    * 闭包:函数中有另一个函数,或者是一个函数中有另一个对象,里面的函数或者是对象都可以使用外面函数中定义的变量或者数据,此时形成闭包
    *
    * function f1(num){
    *
    *   return function(){
    *   console.log(num);
    *   }
    * }
    *
    * f1(20);
    *
    * 闭包模式:函数模式闭包,对象模式的闭包
    * 闭包的作用:缓存数据,延长作用域链,同时也是缺点,函数中的变量不能及时的释放
    *
    * 沙箱:就是一个环境,也可以叫黑盒,在这个环境中模拟外面真实的开发环境,完成需求,效果和外面的真实的开发环境是一样的
    * 沙箱避免命名冲突
    *
    * 递归:函数中调用函数自己,递归一定要有结束的条件,否则就是死循环
    *
    * 递归:一般应用在遍历上
    * 递归轻易不要用,效率很低,
    *
    *
    *
    *
    *
    *
    *
    *
    *
    *
    *
    *
    *
    *
    *
    *
    *
    *
    *
    * */
  </script>
  <script>
//    var num=100;
//    (function () {
//      var num=10;
//      console.log(num);
//    }());
//    console.log(num);
//    (function () {
//
//    })();
  </script>
</head>
<body>


</body>
</html>